iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Modern Web

給前端新手的圖文故事系列 第 28

了解 Next.js 路由與相關應用

  • 分享至 

  • xImage
  •  

Next.js 是一個功能豐富的框架,適用於各種類型的 Web 應用程式,從單頁應用程式到靜態網站。它提供了許多功能和工具,以簡化開發過程並提高性能。如果你正在考慮使用 React 來構建 Web 應用程式,Next.js 是一個強大的選擇。

Next.js 提供了簡單而強大的路由系統,可以幫助你建立現代 Web 應用程式。下面是一些關於 Next.js 路由的相關應用和基本概念:

  1. 自動路由:Next.js 有一個自動路由系統,它根據 pages 目錄中的文件結構自動生成路由。例如,如果你在 pages 目錄下創建一個 about.js 文件,它將自動映射到 /about 路徑。

  2. 動態路由:Next.js 支援動態路由,這意味著你可以通過在文件名中使用中括號 [] 來定義動態路由參數。例如,pages/post/[id].js 將允許你訪問不同的帖子,並將 id 動態傳遞到頁面中。

  3. 嵌套路由:你可以在 pages 目錄下創建子目錄,以實現嵌套路由。這可用於建立複雜的頁面結構。例如,pages/blog/index.jspages/blog/post/[id].js 可以建立一個博客應用程式,其中有帖子列表和單個帖子頁面。

  4. Link 元件:Next.js 提供了一個 <Link> 元件,它使你能夠在應用程式中實現客戶端導航。這可以幫助你在應用程式中輕鬆地連接不同的頁面。

    import Link from 'next/link';
    
    <Link href="/about">
      <a>About</a>
    </Link>
    
  5. 使用 useRouter Hook:你可以使用 useRouter Hook 來獲取路由對象,並在組件中訪問路由相關信息。例如,你可以訪問當前的路由路徑和查詢參數。

    import { useRouter } from 'next/router';
    
    function MyComponent() {
      const router = useRouter();
    
      return <p>Current path: {router.pathname}</p>;
    }
    
  6. 訪問路由參數:如果你使用動態路由,你可以使用 useRouter Hook 或 router.query 來訪問路由參數。例如,對於 pages/post/[id].js,你可以訪問 router.query.id 來獲取 id 參數的值。

  7. 處理 404 錯誤:Next.js 自動處理 404 錯誤,如果路由無效,它將顯示一個默認的 404 頁面。你也可以自定義 404 頁面,通過在 pages 目錄下創建一個 404.js 文件。

  8. 使用路由事件:Next.js 提供一個事件系統,你可以使用它來註冊路由相關事件,例如路由變化時的回調。這允許你執行自定義邏輯,例如在路由切換時加載數據。

    import { useRouter } from 'next/router';
    
    function handleRouteChange(url) {
      // 執行自定義邏輯
    }
    
    function MyComponent() {
      const router = useRouter();
    
      // 註冊路由變化事件
      router.events.on('routeChangeStart', handleRouteChange);
    
      return <p>Current path: {router.pathname}</p>;
    }
    

Next.js 的路由系統是簡單而功能豐富的,它提供了很多有用的功能,使你能夠更容易地建立現代 Web 應用程式。無論是單頁應用程式、多頁應用程式、動態路由還是嵌套路由,Next.js 都能滿足不同應用程式的需求。


上一篇
了解 Next.js 的應用與基礎特性
下一篇
使用 Redux 搭配 TypeScript 作為資料流載體
系列文
給前端新手的圖文故事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言